/// <reference types="@nasl/types" />
namespace extensions.tgwarmflow.viewComponents {
  const { Component, Prop, ViewComponent, Slot, Method, Event, ViewComponentOptions } = nasl.ui;

  @ExtensionComponent({
    type: 'pc',
    ideusage: {
      idetype: 'element',
    }
  })
  @Component({
    title: '棠哥前端warmflow流程依赖',
    description: '棠哥前端warmflow流程依赖',
  })
  export class TgWarmFlow extends ViewComponent {
    constructor(options?: Partial<TgWarmFlowOptions>) {
      super();
    }
  }

  export class TgWarmFlowOptions extends ViewComponentOptions {
    @Prop({
      title: '数据源',
      description: '数据源xml',
      setter: {
        concept: 'InputSetter'
      }
    })
    xml: any;

    // ——》测试发现依赖库暴露出去的数据会自动同步到依赖库内部，因此不需要再次传入数据并监视变化
    // ——》关闭后发现新创建节点无法同步数据，开启测试是否和传入参数变量后触发的逻辑有关，因为之前是可以的
    @Prop({
      title: '选择的用户id字符串数组',
      description: '选择的用户id字符串数组',
      setter: {
        concept: 'InputSetter'
      }
    })
    useridstring: any;

    @Prop({
      title: '驳回选择的用户内容字符串',
      description: '驳回选择的用户内容字符串',
      setter: {
        concept: 'InputSetter'
      }
    })
    anynodeskip: any;

    @Prop({
      title: '当前节点编码',
      description: '当前节点编码',
      setter: {
        concept: 'InputSetter'
      }
    })
    nodeencoding: any;

    // 保存时触发事件
    @Event({
      title: '保存时',
      description: '点击保存按钮触发',
    })
    onSave: (event: any) => void;

    // 选择当前节点处理人
    @Event({
      title: '选择处理人',
      description: '点击选择处理人按钮时触发',
    })
    onGetuserid: (event: any) => void;

    // 选择驳回到指定节点
    @Event({
      title: '选择驳回到指定节点',
      description: '点击选择驳回到指定节点按钮时触发',
    })
    onGetanynodeskip: (event: any) => void;
  }
}